const puppeteer = require('puppeteer');

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

(async () => {
    const browser = await puppeteer.launch({
        headless: false // 设置为false以显示浏览器窗口
    });

    // 打开新页面
    const page = await browser.newPage();
    // 监听弹窗事件
    page.on('dialog', async dialog => {
        console.log(`弹窗消息: ${dialog.message()}`);
        // 设置2秒后关闭弹窗
        setTimeout(() => {
            dialog.accept(); // 或者使用 dialog.dismiss();
        }, 2000);
    });
    await page.goto('https://www.dcloud.io/'); // 确保网址是正确的
    await sleep(1000);

    // 触发弹窗，例如通过执行JavaScript
    await page.evaluate(() => alert('接下来是自动操作的，请勿害怕😨'));

    // 监听新窗口的创建
    const [newPage] = await Promise.all([
        new Promise(x => browser.once('targetcreated', target => x(target.page()))),
        page.click('a.pro-item[href^="//uniapp.dcloud.io"]'), // 假设这是打开新窗口的链接
        sleep(4000)
        // page.waitForNavigation({ waitUntil: 'networkidle0' }) // 等待导航完成
    ]);

    // 新页面加载完成后获取URL
    const currentUrl = await newPage.evaluate(() => window.location.href);
    console.log('新页面的 URL:', currentUrl);

    // 等待新页面中的元素
    // await newPage.waitForSelector('.nav-item', { timeout: 60000 }); // 等待60秒

    // 获取所有.nav-item元素
    const navItems = await newPage.$$('.nav-item');
    console.log("navItems", navItems)
    // 使用for循环依次点击每个元素
    for (let i = 1; i < 4; i++) {
        const navItem = navItems[i];
        await navItem.click();
        console.log("等待跳转", i + 1);
        await sleep(1000);
        //await newPage.waitForNavigation({ waitUntil: 'networkidle0' }); // 等待导航完成
        console.log(`Clicked on nav-item ${i + 1}`);
    }

    // 关闭新窗口（如果需要）
    await newPage.close();

    // 关闭浏览器（如果需要）
    // await browser.close();
})();